package com.sun.test;

/*
第三种循环结构是for循环，使用最多

	语法规则：
		for(初始化1;条件表达式2;步进器4){
			代码逻辑3
		}
	使用for循环的好处：
		1、代码简洁
		2、变量初始化的时候，for循环的作用域仅仅是当前for循环结构
		while循环的作用域是从变量的定义开始到整个方法结束

*/
public class ForDemo {
    public static void main(String[] args) {
        /*
        * 1.求出1-100的奇数和
        * */
      /*  int sum=0;
        for (int i = 1; i < 101; i++) {
            if(i%2!=0){
                sum+=i;
            }
        }
        System.out.println("1-100的奇数和是:"+sum);*/

        /*
        * 2.– 计算各层次的顾客比例
        *  ▪ 需求说明：
        *  – 商场对顾客的年龄层次迚行调查
        * */
        //定义Scanner对象
        /*Scanner sc=new Scanner(System.in);
        //声明一个变量存储30岁以上的人数
        int ageUp=0;
        //声明一个变量存储30岁以下的人数
        int ageDown = 0;
        for (int i = 0; i < 10; i++) {
            System.out.println("请输入第"+(i+1)+"为顾客的年龄:");
            //接收用户输入的顾客年龄
            int age=sc.nextInt();
            //判断
            if(age>30){
                ageUp++;
            }else{
                ageDown++;
            }
        }
        //输出年龄占比
        System.out.println("超过30岁的人的比率是:"+(ageUp/10.0*100)+"%");
        System.out.println("小于30岁的人的比率是:"+(ageDown/10.0*100)+"%");*/


        /*
        * 3.用while和for循环输出1-1000之间能被5整除的数，且每行输出3个
        * */
        /*int j=1;
        //声明一个计数器，用于计算输出数的个数，以便换行
        int count=0;
        while (j<=1000){
            if(j%5==0){//被5整除的数
                System.out.print(j+"\t");//如果能被5整除，输出，并且空几格
                count++;
            }
            j++;//j自增，以便进行下一个数的判断
            if(count%3==0){//如果输出了三个数，则可以换行
                System.out.println();
            }
        }
        //方式2
        for (int i = 1; i <= 1000; i++) {
            if(i % 5 == 0){//被5整除的数
                System.out.print(i+"\t");
                count++;
            }
            if (count % 3 == 0) {//每隔3个数字换一次行
                System.out.println();
            }
        }*/



        /*
        * 4.使用循环分别实现将10进制整数转换成2进制
        * */
       /* int number=10;
        //转换
        int binary=number;
        //存放转换后的二进制
        String str="";
        do{//除数不是0
            //除2得到商
            int div=binary/2;
            //得到余数作为二进制
            int mod=binary%2;
            //将余数存起来
            str=mod+str;
            //将商作为除数
            binary=div;
        }while (binary!=0);
        //输出转后的二进制
        System.out.println("十进制:"+number+",转换后的二进制:==>"+str);*/

        /*
        * 5.编程求：1！+2！+……+10!
        * 第一，我们分别求出1，2，3..10的阶乘；
        * 比如4的阶乘 1*2*3*4 ；我们可以通过循环分别把这些阶乘求出来；
        * 第二，我们把10个数字的阶乘相加即可
        * */
      /*  int sum=0;
        for (int i = 1; i <= 10; i++) {
            int total=1;
            for (int j = 1; j <=i ; j++) {
                total*=j;
            }
            sum+=total;
            System.out.println(i+"!="+total);
        }
        System.out.println("1!+2!+3!+...+10!的阶乘和是："+sum);*/
        /*int sum=0;
        for(int i=1;i<10;i++){
            do{
                i++;
                if(i%2!=0)
                    sum+=i;
            }while(i<6);
        }
        System.out.println(sum);*/


        /*
        * 5.3个班级各4名学员参赛，计算每个班级参赛学员平均分，统计成绩大亍85分学员数
        * */
        //声明一个计数器，统计学员数量
       /* int count=0;
        //声明一个变量用于存放学员的成绩
        int score=0;
        //声明一个变量用于存放学员的总成绩
        int sum=0;
        for (int i = 0; i < 3; i++) {//外层循环控制班级
            System.out.println("请输入第"+(i+1)+"个班的成绩:");
            for (int j = 0; j < 4; j++) {//内层循环控制每个学员
                //提示用户输入学员的成绩
                System.out.println("请输入"+(i+1)+"班第"+(j+1)+"个学员的分数:");
                //接收用户输入的分数
                score=new Scanner(System.in).nextInt();
                sum+=score;//得到总分
                //统计成绩大于85分的学员
                if(score>=85){
                    count++;//学员数加1
                }else {//成绩小于85，继续下一次循环
                    continue;
                }
            }
            //输出每个班级参赛学员的平均分
            System.out.println("第"+(i+1)+"个班，平均分是:==>"+(sum/4));
        }*/



        /*
        * 6.打印矩形
        * */
        /*for (int i = 0; i < 4; i++) {//外层循环控制行
            for (int j = 0; j < 9; j++) {//内层循环控制列
                System.out.print("*");//打印
            }
            System.out.println();//换行
        }*/
        //打印空心矩形
       /* for (int i = 0; i < 9; i++) {//外层循环控制行
            for (int j = 0; j < 7; j++) {//内层训话控制列
                if(i==0){//行头
                    System.out.print("*");
                }else if(i==8){//行尾
                    System.out.print("*");
                }else if (j==0) {//列头
                    System.out.print("*");
                }else if(j==6){//列尾
                    System.out.print("*");
                }else{//其它地方
                    System.out.print(" ");
                }
            }
            System.out.println();//换行
        }*/
        /*
        * 7.打印平行四边形
        * */
        /*int i,j,n=5;
        for(i=1;i<=n;i++){
            for(j=1;j<=2*i-2;j++) {
                System.out.print(" ");
            }
            for(j=1;j<=1;j++) {
                System.out.print("*");
            }
            for(j=1;j<=4;j++) {
                System.out.print(" *");
            }
            System.out.println();
        }
        for ( i = 1; i < 6; i++) {
            for ( j = 1; j < 6 - i; j++) {
                System.out.print(" ");
            }
            for ( j = 1; j <= 6; j++) {
                System.out.print(" *");
            }
            System.out.println();
        }*/


        /*
        * 8.打印等腰三角形
        * */
        /*for (int i = 0; i < 6; i++) {//外层循环控制行数
            //空格分布
            for (int j = 0; j < 6-i; j++) {
                System.out.print(" ");
            }
            //符号分布
            for (int K = 0; K < 2*i-1; K++) {
                System.out.print("*");
            }
            System.out.println();//换行
        }*/

        /*
        * 9.打印菱形
        * */
       /* Scanner scan = new Scanner(System.in);
        System.out.println("请输入菱形的大小：");
        int size = scan.nextInt();
        //上半部分
        int v = 1;//第一行*的个数
        for(int i=1;i<=size/2+1;i++){
            //打印空格
            for(int j=1;j<=size/2+1-i;j++){
                System.out.print(" ");
            }
            //打印*
            for(int k=1;k<=v;k++){
                System.out.print("*");

            }
            v+=2;//下一行+2个
            System.out.println();//换行
        }
        //下半部分
        int h = size-2;//第一行*的个数
        for(int i =1;i<=size/2;i++){
            //打印空格
            for(int j=1;j<=i;j++){
                System.out.print(" ");
            }
            //打印*
            for(int k=1;k<=h;k++){
                System.out.print("*");
            }
            h -=2;//下一行-2个
            System.out.println();
        }*/


        /*
        * 10.打印等边三角形
        * */
       /* int x=0;
        for (int i = 1; i <= 3; i++) {
            for (int j = 5- (i+x); j >= 0; j--) {
                System.out.print(" ");
            }
            for (int j = 0; j < 2 * i - 1; j++) {
                System.out.print("* ");
            }
            System.out.println();
            System.out.println();//分两行
            for (int j = 4- (i+x); j >= 0; j--) {
                System.out.print(" ");
            }
            for (int j = 0; j < 2 * i ; j++) {
                System.out.print("* ");
            }
            System.out.println();
            System.out.println();//分两行
            x=x+1;
        }*/
        /*
        * return的两种用途：
        *   1、返回方法的返回值
        *   2、终止当前程序
        * */
       /* System.out.println(get());
        for (int i = 0; i < 10; i++) {
            System.out.println(i);
            if(i==5){
                return;
                //System.exit(100);
            }
            System.out.println("接着执行");
        }*/
        //方式4
        /*int count=0;
        for (int i = 1; i < 1001; i++) {
            if(i%5==0){
                System.out.print(i+"\t");
                count++;
            }
            if(count==3){
                System.out.println();
                count=0;
            }
        }*/


        /*
        * 11.生成0-100随机数，直到生成88为止，停止循环！
        * */
        /*int total=0;
        System.out.println("Begin");
        while(true) {
            total++;
            int i = (int)Math.round(100 * Math.random());
            if(i == 88) break;
        }
        System.out.println("Game over, used " + total + " times.");*/
        /*
        * 12.把100~150之间不能被3整除的数输出
        * */
        /*for (int i = 100; i < 150; i++) {
            if (i % 3 == 0)
                continue;
            System.out.println(i);
        }*/

        /*
        * 13.循环录入某学生5门课的成绩并计算平均分，
        *    如果某分数录入为负，停止录入并提示录入错误
        *    循环录入成绩，判断录入正确性：录入错误，使
        *    用break语句立刻跳出循环；否则，累加求和
        * */
       /* Scanner sc=new Scanner(System.in);
        int score;
        int sum=0;
        System.out.println("请输入学生姓名:");
        String name=sc.nextLine();
        for (int i = 0; i < 5; i++) {//有几门课
            System.out.println("请输入第"+(i+1)+"门课的分数:");
            //接收用户录入的成绩
            score=sc.nextInt();
            //判断录入的正确性
            if(score>0){
                sum += score;//累加求和
            }else {
                System.out.println("抱歉，分数录入错误，请重新录入！");
                break;
            }
        }
        //输出平均分
        System.out.println(name+"的平均分是:"+sum/5);*/


        /*
        * 14.1~10之间的整数相加，得到累加值大于20的当前数
        * */
       /* int sum=0;
        for (int i = 1; i < 11; i++) {
            sum+=i;
            if(sum>20){
                System.out.println("当前数是:"+sum);
                break;
            }
        }*/

        /*
        * 循环录入Java课的学生成绩，统计分数大于等于80分的学生比例
        * */
      /*  System.out.println("输入班级总人数:");
        int n=new Scanner(System.in).nextInt();
        int score;
        int count=0;
        for (int i = 0; i < n; i++) {
            System.out.println("请输入第"+(i+1)+"位学生的成绩:");
            //接收用户输入的成绩
            score=new Scanner(System.in).nextInt();
            //方式1判断
            *//*if(score>=80){
                count++;
            }else {
                continue;//直接进入下一次循环
            }*//*
            //方式2判断
            if(score<80){
                continue;
            }
            count++;
        }
        //输出
        System.out.println("80分以上的学生人数有:"+count);
        System.out.println("80分以上的学生所占的比例为:"+(count/5.0*100)+"%");*/

        /*
        * 需求说明：
        *    – 循环彔入3位会员的信息
        *    – 会员号合法，显示彔入信息；
        *    – 否则显示彔入失败
        * */
        /*int vipNum=0;
        String birthDay="";
        int score=0;
        String vipStr="";
        for (int i = 1; i < 4; i++) {
            System.out.println("请输入会员号<4位整数>:");
            vipNum=new Scanner(System.in).nextInt();
            System.out.println("请输入会员生日<月/日[分别用两位整数表示]>:");
            birthDay=new Scanner(System.in).next();
            System.out.println("请输入会员积分:");
            score=new Scanner(System.in).nextInt();
            vipStr=vipNum+"";
            if(vipStr.length() !=4){
                System.out.println("客户号"+vipNum+"是无效会员号!"+"\n"+"录入信息失败！");
                System.out.println();
                continue;
            }
            System.out.println("您录入的会员信息是：" + "\n" + vipNum + "\t" + birthDay + "\t" + score);
            System.out.println();
        }
        System.out.println("over");*/


        /*
        * 15.输出九九乘法表
        * */

        //右上角乘法表
        /*for (int i = 9; i >= 1; i--) {
            for (int k = 1; k <= 9 - i; k++) {
                System.out.print("     \t");
            }
            for (int j = 1; j <= i; j++) {
                System.out.print(j + "*" + i + "=" + (i * j) + "\t");
            }
            System.out.println();
        }
        System.out.println("=================================================");
        //左下角乘法表
        for (int i = 1; i < 10; i++) {//外层循环控制行数
            for (int j = 1; j <=i ; j++) {//内层循环控制列数
                System.out.print(j+"*"+i+"="+i*j+"\t");//打印
            }
            System.out.println();//换行
        }
        System.out.println("=================================================");
        //左上角乘法表
        for (int i = 1; i <= 9; i++) {
            for (int j = i; j <= 9; j++) {
                System.out.print(j + "*" + i + "=" + (i * j) + "\t");
            }
            System.out.println();
        }

        //右小角乘法表
        System.out.println("=================================================");
        for (int i = 1; i <= 9; i++) {// 控制行
            // 用来控制每行空格的数量
            for(int k = 1; k <= 9 - i; k++) {
                System.out.print("     \t");
            }
            for (int j = 1; j <= i; j++) {// 控制列
                System.out.print(j + "*" + i + "=" + (i * j) + "\t");
            }
            System.out.println();
        }*/

    }

    public static int get(){
        return 100;
    }
    public static String print1(int num) {//判断结果是否大于9，如果不大于9前面加一个空格
        return  (num>9)?""+num:" "+num;
    }
}
